package map;

import javafx.print.Collation;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * Map提供了三种遍历方式:
 * 1:单独遍历key
 * 2:遍历每组键值对
 * 3:单独遍历value(不常用)
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("语文", 99);
        map.put("数学", 95);
        map.put("英语", 96);
        map.put("物理", 94);
        map.put("化学", 92);
        System.out.println(map);

        /*
        遍历所有的key

        Set keySet()
        将当前Map中所有的key以一个Set集合形式返回
         */
        Set<String>keySet=map.keySet();
        for (String key:keySet){
            System.out.println("key:"+key);
        }
        /*
        遍历每一组键值对
        Set entrySet()
        将当前Map中每一组键值对以一个Entry实例表示并存入一个Set集合后返回

        java,util.Map.Entry的每一个实例表示一组键值对
         */
        Set<Map.Entry<String,Integer>> entrySet=map.entrySet();
        for (Map.Entry<String,Integer> e:entrySet){
            String key=e.getKey();
            Integer value=e.getValue();
            System.out.println(key+":"+value);
        }
        /*
        遍历所有的value
        Collection values()
        将当前Map中所有的value存入一个集合后返回
         */

        Collection<Integer> values=map.values();
        for (Integer value:values){
            System.out.println("value:"+value);
        }

        /*
        JDK8之后Map和集合都提供了一个机遇lambda表达式的遍历方式;foreach
         */
        map.forEach((k,v)-> System.out.println(k+":"+v));

        keySet.forEach(e-> System.out.println(e));
    }
}
